iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
1
Security

不專業infra甘苦談系列 第 15

Day-15 Django 以WSGI串接Apache

  • 分享至 

  • xImage
  •  

前言

今天剛好來聊聊上次幫客戶設定的防火牆HA,之前有一個優化網路相關的維運案子,發現客戶買了兩台防火牆,一台運行,但是另外一台竟然只做備份,然後插著並關機,表示不用開著浪費電,然後我們非常傻眼,明明該防火牆有支援HA的設定,為啥不運行?後來我們進場後,就將HA設定上去了,但是後來發現非常不穩定,剛設定好運行時,常常兩台的連線斷掉,導致兩台都以為自己是主要防火牆,然後搶外部IP,造成網路不穩,雖然運行個2-3分鐘後,總算是穩定了,但是有一次我在調整設定時,八七去調整到HA的設定,導致失敗沒有噴錯,直接將我的HA關掉,然後就發生輸入外網IP,有的時候我連到是A台,有時候連到是B台,我當時怕死了,因為這樣他們公司的網路一定很不穩,後來還好連到A的時候,我將HA重新開啟,才結束這場災難,這就讓我聯想到當初上VMware Esxi管理時,老師提到不了解HA就擅自開啟,有時候會比沒開還慘。
好啦,經驗分享完了,下面會繼續接續上次的Django架站SOP。

環境

  1. Django: version 1.11.15
  2. Wsgi: python36u-mod_wsgi

Django

  1. 下載Django
sudo /usr/local/bin/pip3 install django==1.11.15 
sudo  /usr/local/bin/pip3 install pymysql 
  1. 配置Django
sudo mkdir -p /var/www/html/django
cd /var/www/html/django
  1. 建置Django專案
    • 專案名稱叫myproject(可改)
django-admin startproject myproject
  1. 添加static目录
sudo vim myproject/settings.py 
  • 新增「STATIC_ROOT = os.path.join(BASE_DIR, "static/")」
  • 新增限制存取的IP
ALLOWED_HOSTS = ['*']
  1. 新建資料庫(sqlite)
sudo /usr/local/bin/python3 manage.py makemigrations
sudo /usr/local/bin/python3 manage.py migrate
  1. 執行Django測試
python3 manage.py runserver

使用wsgi串接Apache和Django

  1. 下載mod_wsgi
sudo yum install python36u-mod_wsgi
  1. 導出Apache所需的mod_wsgi模組
sudo mod_wsgi-express install-module
  • 可得LoadModule 、 WSGIPythonHome
  1. 配置apache配置文件
sudo vim /etc/httpd/conf/httpd.conf
  • 新增剛剛得到的LoadModule進入文件中
  • LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
  1. 新增django.conf文件
sudo vim /etc/httpd/conf.d/django.conf 
WSGIPythonHome "/usr" #寫剛剛得到的

Listen 8080
<VirtualHost *:8080>

Alias /static /var/www/html/django/myproject/static
<Directory /var/www/html/django/myproject/static>
 Require all granted
</Directory>

<Directory /var/www/html/django/myproject>
  <Files wsgi.py>
    Require all granted
  </Files>
</Directory>

WSGIDaemonProcess myproject 
WSGIScriptAlias / /var/www/html/django/myproject/myproject/wsgi.py

</VirtualHost>
  1. 修改Django專案中的wsgi.py
vim /var/www/html/django/myproject/myproject/wsgi.py
import os
import sys

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django/myproject')

application = get_wsgi_application()
  1. 修改專案權限
sudo chmod -R 755 /var/www/html

sudo chown -R apache:apache /var/www/html 
  • 原 :
  • 改 :

上一篇
Day-14 台中又沒放假了,延續上次Django架站
下一篇
Day-16 Postgresql與Django的距離
系列文
不專業infra甘苦談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言